Beyond Threads: Resource Sharing in UNIX
نویسندگان
چکیده
UNIX provides a programming model for the user which gives an illusion of multiprocessing. On uniprocessors, this illusion works well, providing communication paths, firewalls between processes and a simple programming environment. Unfortunately, the normal UNIX model does not provide the capabilities to take full advantage of modern multiprocessor hardware. This results from a design which uses data queueing and preemption to provide the multiprocessing illusion, which are unnecessary on a true multiprocessor. The recent proposed addition of threads to CMU’s MACH kernel shows that there are other effective programming models that may be supported in UNIX as well. This model provides for sharing the virtual address space of a process by breaking the process into several lightweight contexts that may be manipulated more quickly than a normal process. Unfortunately, this model raises questions about support for normal UNIX semantics, as well as thread scheduling performance and kernel overhead. This paper describes a programming model which goes beyond the simple concept of threads, providing a much broader range of resource sharing while retaining the key parts of the UNIX process model. Instead of threads, the concept of a process is retained along with most of it’s semantics. As usual, the fundamental resource shared is the virtual address space. In addition, open file descriptors, user and group ID’s, the current directory, and certain other elements of the process environment may be shared also. This makes for easy construction of useful servers and simple concurrent applications, while still providing high-performance support for more computationally intensive applications. This implementation, labelled process share groups, allows normal process actions to take place easily, such as system calls, page faulting, signalling, pausing, and other actions which are ill-defined within the threads model. The paper describes the philosophy which drove the design, as well as details of the implementation, which is based on, and upwardly compatible with, AT&T 5.3 UNIX. Performance of normal UNIX processes is maintained while providing high-performance share group support.
منابع مشابه
Variable Weight Processes with Flexible Shared Resources
Traditional UNIX processes are inadequate for representing multiple threads of control in parallel programs. They are inflexible in their resource allocation, unable to cleanly share system resources, and they carry a heavy overhead. Some new operating systems, such as MACH, split the process into multiple light-weight threads of execution and a task which defines their resource set. This paper...
متن کاملThe PODOS File System - Exploiting the High-Speed Communication Subsystem
Performance Oriented Distributed Operating System (PODOS) is a clustering environment, being built on a monolithic Linux kernel. PODOS augments very few components to the Linux kernel in order to make it distributed. These minimal components are the Communication Manager (CM), the Resource Manager (RM), the PODOS File System (PFS) and the Global IPC (GIPC). Each one of these components are desi...
متن کاملIssues in Implementation of Cache - A nity Scheduling Murthy
In a shared memory multiprocessor, a thread may have an a nity to a processor because of the data remaining in the processor's cache from a previous dispatch. We show that two basic problems should be addressed in a Unix-like system to exploit cache a nity for improved performance: First, the limitation of the Unix dispatcher model (\processor seeking a thread"); Second, pseudo-a nity caused by...
متن کاملApproaching a Smart Sharing of Resources in SMT Processors
SMT processors increase performance by executing instructions from several threads simultaneously. These threads use the processor’s resources better by sharing them, but, at the same time, threads are competing for these resources. The way critical resources are distributed among threads determines the final throughput and also the performance of each individual thread. Currently, the processo...
متن کاملImplementing Lightweight Threads
We describe an implementation of a threads library that provides extremely lightweight threads within a single UNIX process while allowing fully concurrent access to system resources. The threads are lightweight enough so that they can be created quickly, there can be thousands present, and synchronization can be accomplished rapidly. These goals are achieved by providing user threads which mul...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1988